from app import create_app, db
from app.models import User, Weight
from sqlalchemy import text

def init_db():
    app = create_app()
    with app.app_context():
        # 删除所有表（按照正确的顺序）
        print("开始删除现有表...")
        try:
            # 先删除依赖表
            db.session.execute(text('DROP TABLE IF EXISTS weights'))
            db.session.execute(text('DROP TABLE IF EXISTS users'))
            db.session.commit()
            print("现有表已删除")
        except Exception as e:
            print(f"删除表时出错: {e}")
            db.session.rollback()

        # 创建所有表
        print("开始创建新表...")
        try:
            # 使用 create_all() 来自动处理依赖关系
            db.create_all()
            print("所有表创建完成")
        except Exception as e:
            print(f"创建表时出错: {e}")
            raise

if __name__ == '__main__':
    # 请求确认
    confirm = input("此操作将删除所有数据并重新创建表结构。是否继续？(y/n): ")
    if confirm.lower() == 'y':
        try:
            init_db()
            print("数据库初始化完成")
        except Exception as e:
            print(f"初始化数据库时出错: {e}")
    else:
        print("操作已取消") 